package com.AdvancedDemos.正则表达式;

public class 初识Regex {
    public static void main(String[] args) {
        /**
         * 什么是正则表达式?
         *
         * regular a.正规的,正常的,有规律的
         * Regular Expression 正则表达式 (RegEx、regex)
         *
         * 就是由一些特定的字符组成,代表一个规则的字符串
         * 作用:
         * 1.用来校验数据格式是否合法
         * 2.在一段文本中查找满足要求的内容
         */


        System.out.println("null:" + checkQq(null));
        System.out.println("1789173134:" + checkQq("1789173134"));
        System.out.println("178A173134:" + checkQq("178A173134"));
        //null:false
        //1789173134:true
        //178A173134:false

        System.out.println("------------------------");
        System.out.println("null:" + checkQqWithRegex(null));
        System.out.println("1789173134:" + checkQqWithRegex("1789173134"));
        System.out.println("178A173134:" + checkQqWithRegex("178A173134"));
        //null:false
        //1789173134:true
        //178A173134:false

    }

    /*
    需求:校验QQ号码是否正确,要求全部是数字,长度在6-20之间,不能以0开头
     */
    public static boolean checkQq(String qq) {
        //首先排除非法情况
        if (qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20) {
            return false;
        }
        //判断qq中是否只含有数字
        for (int i = 0; i < qq.length(); i++) {
            char c = qq.charAt(i);
            if (c < '0' || c > '9') {
                return false;
            }
        }

        //说明qq中只含有数字
        return true;
    }

    /*
    使用Regex正则表达式来判断数据格式是否合法
     */
    public static boolean checkQqWithRegex(String qq) {
        /*
        String类提供了一个匹配正则表达式的方法
        public boolean matches(String regex) --- 判断字符串是否匹配正则表达式,匹配返回true,不匹配返回false
         */
        return qq != null && qq.matches(/*Strubg regex*/"[1-9]\\d{5,19}");
        // [1-9]表示第一位必须是1-9
        // \\d表示后面必须全是数字
        // {5-19}代表后面必须是5-19位
    }

}
